<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>全测试结果的报告</title>
    <meta name="generator" content="HTMLTestRunner 0.8.2.2"/>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <link href="http://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet">
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
    <script src="http://libs.baidu.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>
    
<style type="text/css" media="screen">
body        { font-family: Microsoft YaHei,Tahoma,arial,helvetica,sans-serif;padding: 20px; font-size: 120%; }
table       { font-size: 100%; }
/* -- heading ---------------------------------------------------------------------- */
.heading {
    margin-top: 0ex;
    margin-bottom: 1ex;
}
.heading .description {
    margin-top: 4ex;
    margin-bottom: 6ex;
}
/* -- report ------------------------------------------------------------------------ */
#total_row  { font-weight: bold; }
.passCase   { color: #5cb85c; }
.failCase   { color: #d9534f; font-weight: bold; }
.errorCase  { color: #f0ad4e; font-weight: bold; }
.hiddenRow  { display: none; }
.testcase   { margin-left: 2em; }
</style>

</head>
<body >
<script language="javascript" type="text/javascript">
output_list = Array();
/*level 调整增加只显示通过用例的分类 --Findyou
0:Summary //all hiddenRow
1:Failed  //pt hiddenRow, ft none
2:Pass    //pt none, ft hiddenRow
3:All     //pt none, ft none
*/
function showCase(level) {
    trs = document.getElementsByTagName("tr");
    for (var i = 0; i < trs.length; i++) {
        tr = trs[i];
        id = tr.id;
        if (id.substr(0,2) == 'ft') {
            if (level == 2 || level == 0 ) {
                tr.className = 'hiddenRow';
            }
            else {
                tr.className = '';
            }
        }
        if (id.substr(0,2) == 'pt') {
            if (level < 2) {
                tr.className = 'hiddenRow';
            }
            else {
                tr.className = '';
            }
        }
    }
    //加入【详细】切换文字变化 --Findyou
    detail_class=document.getElementsByClassName('detail');
	//console.log(detail_class.length)
	if (level == 3) {
		for (var i = 0; i < detail_class.length; i++){
			detail_class[i].innerHTML="收起"
		}
	}
	else{
			for (var i = 0; i < detail_class.length; i++){
			detail_class[i].innerHTML="详细"
		}
	}
}
function showClassDetail(cid, count) {
    var id_list = Array(count);
    var toHide = 1;
    for (var i = 0; i < count; i++) {
        //ID修改 点 为 下划线 -Findyou
        tid0 = 't' + cid.substr(1) + '_' + (i+1);
        tid = 'f' + tid0;
        tr = document.getElementById(tid);
        if (!tr) {
            tid = 'p' + tid0;
            tr = document.getElementById(tid);
        }
        id_list[i] = tid;
        if (tr.className) {
            toHide = 0;
        }
    }
    for (var i = 0; i < count; i++) {
        tid = id_list[i];
        //修改点击无法收起的BUG，加入【详细】切换文字变化 --Findyou
        if (toHide) {
            document.getElementById(tid).className = 'hiddenRow';
            document.getElementById(cid).innerText = "详细"
        }
        else {
            document.getElementById(tid).className = '';
            document.getElementById(cid).innerText = "收起"
        }
    }
}
function html_escape(s) {
    s = s.replace(/&/g,'&amp;');
    s = s.replace(/</g,'&lt;');
    s = s.replace(/>/g,'&gt;');
    return s;
}
</script>
<div class='heading'>
<h1 style="font-family: Microsoft YaHei">全测试结果的报告</h1>
<p class='attribute'><strong>测试人员 : </strong> 小郁</p>
<p class='attribute'><strong>开始时间 : </strong> 2020-03-12 23:15:43</p>
<p class='attribute'><strong>合计耗时 : </strong> 0:00:09.500400</p>
<p class='attribute'><strong>测试结果 : </strong> 共 63，通过 54，失败 8，错误 1，通过率= 85.71%</p>

<p class='description'>202003122315keyou项目最终报告</p>
</div>


<p id='show_detail_line'>
<a class="btn btn-primary" href='javascript:showCase(0)'>概要{ 85.71% }</a>
<a class="btn btn-danger" href='javascript:showCase(1)'>失败{ 8 }</a>
<a class="btn btn-success" href='javascript:showCase(2)'>通过{ 54 }</a>
<a class="btn btn-info" href='javascript:showCase(3)'>所有{ 63 }</a>
</p>
<table id='result_table' class="table table-condensed table-bordered table-hover">
<colgroup>
<col align='left' />
<col align='right' />
<col align='right' />
<col align='right' />
<col align='right' />
<col align='right' />
</colgroup>
<tr id='header_row' class="text-center success" style="font-weight: bold;font-size: 16px;">
    <td>用例集/测试用例</td>
    <td>总计</td>
    <td>通过</td>
    <td>失败</td>
    <td>错误</td>
    <td>详细</td>
</tr>

<tr class='failClass warning'>
    <td>test_1register.TestRegister</td>
    <td class="text-center">12</td>
    <td class="text-center">11</td>
    <td class="text-center">1</td>
    <td class="text-center">0</td>
    <td class="text-center"><a href="javascript:showClassDetail('c1',12)" class="detail" id='c1'>详细</a></td>
</tr>

<tr id='pt1_1' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_register_01: 注册成功</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt1_2' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_register_02: 注册不成功-不输入任何字段</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt1_3' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_register_03: 注册不成功-不输入username</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='ft1_4' class='none'>
    <td class='failCase'><div class='testcase'>test_register_04: 注册不成功-不输入email</div></td>
    <td colspan='5' align='center'>
    <!--默认收起错误信息 -Findyou
    <button id='btn_ft1_4' type="button"  class="btn btn-danger btn-xs collapsed" data-toggle="collapse" data-target='#div_ft1_4'>失败</button>
    <div id='div_ft1_4' class="collapse">  -->
    <!-- 默认展开错误信息 -Findyou -->
    <button id='btn_ft1_4' type="button"  class="btn btn-danger btn-xs" data-toggle="collapse" data-target='#div_ft1_4'>失败</button>
    <div id='div_ft1_4' class="collapse in" align="left">
    <pre>
    
ft1_4: 预期结果： {'email': ['该字段不能为空。']}
实际结果： {'id': 270, 'username': 'yu0312231544268603', 'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoyNzAsInVzZXJuYW1lIjoieXUwMzEyMjMxNTQ0MjY4NjAzIiwiZXhwIjoxNTg0MTEyNTQyLCJlbWFpbCI6IiJ9.N8ANjW3fK2rfBfteTDULO_5Dt1HTDuL4YrXQBgcZP6g'}
data的数据 {'username': 'yu0312231544268603', 'password': 'xiaoyu123', 'email': '', 'password_confirm': 'xiaoyu123'}
Traceback (most recent call last):
  File "D:\Python36\keyou_test_project\library\ddt.py", line 145, in wrapper
    return func(self, *args, **kwargs)
  File "D:\Python36\keyou_test_project\testcases\test_1register.py", line 52, in test_register
    raise e
  File "D:\Python36\keyou_test_project\testcases\test_1register.py", line 42, in test_register
    self.assertEqual(expected, res)  # 否则，比较预期结果和测试结果的code和msg
AssertionError: {'email': ['该字段不能为空。']} != {'id': 270, 'username': 'yu0312231544268603[191 chars]P6g'}
- {'email': ['该字段不能为空。']}
+ {'id': 270,
+  'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoyNzAsInVzZXJuYW1lIjoieXUwMzEyMjMxNTQ0MjY4NjAzIiwiZXhwIjoxNTg0MTEyNTQyLCJlbWFpbCI6IiJ9.N8ANjW3fK2rfBfteTDULO_5Dt1HTDuL4YrXQBgcZP6g',
+  'username': 'yu0312231544268603'}


    </pre>
    </div>
    </td>
</tr>

<tr id='pt1_5' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_register_05: 注册不成功-不输入password</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt1_6' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_register_06: 注册不成功-不输入password_confirm</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt1_7' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_register_07: 注册不成功-用户名已存在</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt1_8' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_register_08: 注册不成功-邮箱已被注册</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt1_9' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_register_09: 注册不成功-两次输入密码不一致</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt1_10' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_register_10: 注册不成功-请求方法不对</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt1_11' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_register_11: 注册不成功-用户名大于20字符</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt1_12' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_register_12: 注册不成功-用户名小于6字符</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr class='passClass warning'>
    <td>test_2registered_user.TestRegisteredUser</td>
    <td class="text-center">2</td>
    <td class="text-center">2</td>
    <td class="text-center">0</td>
    <td class="text-center">0</td>
    <td class="text-center"><a href="javascript:showClassDetail('c2',2)" class="detail" id='c2'>详细</a></td>
</tr>

<tr id='pt2_1' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_register_1: 已注册用户</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt2_2' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_register_2: 未注册用户</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr class='passClass warning'>
    <td>test_3registered_email.TestRegisteredUser</td>
    <td class="text-center">2</td>
    <td class="text-center">2</td>
    <td class="text-center">0</td>
    <td class="text-center">0</td>
    <td class="text-center"><a href="javascript:showClassDetail('c3',2)" class="detail" id='c3'>详细</a></td>
</tr>

<tr id='pt3_1' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_register_1: 已注册用户</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt3_2' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_register_2: 未注册用户</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr class='passClass warning'>
    <td>test_4login.TestLogin</td>
    <td class="text-center">5</td>
    <td class="text-center">5</td>
    <td class="text-center">0</td>
    <td class="text-center">0</td>
    <td class="text-center"><a href="javascript:showClassDetail('c4',5)" class="detail" id='c4'>详细</a></td>
</tr>

<tr id='pt4_1' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_login_1: 登录成功</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt4_2' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_login_2: 登录失败-用户名为空</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt4_3' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_login_3: 登录失败-密码为空</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt4_4' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_login_4: 登录失败-登录的用户不存在</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt4_5' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_login_5: 登录失败-密码不正确</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr class='passClass warning'>
    <td>test_5project_create.TestProjectCreate</td>
    <td class="text-center">15</td>
    <td class="text-center">15</td>
    <td class="text-center">0</td>
    <td class="text-center">0</td>
    <td class="text-center"><a href="javascript:showClassDetail('c5',15)" class="detail" id='c5'>详细</a></td>
</tr>

<tr id='pt5_1' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_project_create_01: 成功创建项目-带描述</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt5_2' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_project_create_02: 成功创建项目-不带描述</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt5_3' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_project_create_03: 创建项目不成功-全部字段都不填</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt5_4' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_project_create_04: 创建项目不成功-项目名称不填</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt5_5' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_project_create_05: 创建项目不成功-项目负责人不填</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt5_6' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_project_create_06: 创建项目不成功-项目测试人员不填</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt5_7' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_project_create_07: 创建项目不成功-开发人员不填</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt5_8' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_project_create_08: 创建项目不成功-应用市场人员不填</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt5_9' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_project_create_09: 创建项目不成功-项目名称重复</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt5_10' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_project_create_10: 创建项目不成功-项目名称大于200字符</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt5_11' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_project_create_11: 创建项目不成功-项目负责人大于50字符</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt5_12' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_project_create_12: 创建项目不成功-项目测试人员大于50字符</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt5_13' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_project_create_13: 创建项目不成功-开发人员大于50字符</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt5_14' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_project_create_14: 创建项目不成功-发布应用大于100字符</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt5_15' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_project_create_15: 创建项目不成功-描述大于200字符</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr class='passClass warning'>
    <td>test_6interfaces.TestInterfaces</td>
    <td class="text-center">10</td>
    <td class="text-center">10</td>
    <td class="text-center">0</td>
    <td class="text-center">0</td>
    <td class="text-center"><a href="javascript:showClassDetail('c6',10)" class="detail" id='c6'>详细</a></td>
</tr>

<tr id='pt6_1' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_interfaces_01: 成功创建接口-带描述</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt6_2' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_interfaces_02: 成功创建接口-不带描述</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt6_3' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_interfaces_03: 创建接口不成功-全部字段都不填</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt6_4' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_interfaces_04: 创建项目不成功-name不填</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt6_5' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_interfaces_05: 创建项目不成功-tester不填</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt6_6' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_interfaces_06: 创建项目不成功-project_id不填</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt6_7' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_interfaces_07: 创建项目不成功-name重复</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt6_8' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_interfaces_08: 创建项目不成功-name的字符超过200</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt6_9' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_interfaces_09: 创建项目不成功-tester的字符超过50</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt6_10' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_interfaces_10: 创建项目不成功-project_id不存在</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr class='errorClass warning'>
    <td>test_7testcases.TestTestCases</td>
    <td class="text-center">17</td>
    <td class="text-center">9</td>
    <td class="text-center">7</td>
    <td class="text-center">1</td>
    <td class="text-center"><a href="javascript:showClassDetail('c7',17)" class="detail" id='c7'>详细</a></td>
</tr>

<tr id='pt7_1' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_testcases_01: 成功创建用例-带include</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='ft7_2' class='none'>
    <td class='errorCase'><div class='testcase'>test_testcases_02: 成功创建用例-不带include</div></td>
    <td colspan='5' align='center'>
    <!--默认收起错误信息 -Findyou
    <button id='btn_ft7_2' type="button"  class="btn btn-danger btn-xs collapsed" data-toggle="collapse" data-target='#div_ft7_2'>错误</button>
    <div id='div_ft7_2' class="collapse">  -->
    <!-- 默认展开错误信息 -Findyou -->
    <button id='btn_ft7_2' type="button"  class="btn btn-danger btn-xs" data-toggle="collapse" data-target='#div_ft7_2'>错误</button>
    <div id='div_ft7_2' class="collapse in" align="left">
    <pre>
    
ft7_2: Traceback (most recent call last):
  File "D:\Python36\keyou_test_project\library\ddt.py", line 145, in wrapper
    return func(self, *args, **kwargs)
  File "D:\Python36\keyou_test_project\testcases\test_7testcases.py", line 50, in test_testcases
    self.assertEqual(res["name"], data["name"])
KeyError: 'name'


    </pre>
    </div>
    </td>
</tr>

<tr id='pt7_3' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_testcases_03: 创建用例不成功-全部字符都不填</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='ft7_4' class='none'>
    <td class='failCase'><div class='testcase'>test_testcases_04: 创建用例不成功-name不填</div></td>
    <td colspan='5' align='center'>
    <!--默认收起错误信息 -Findyou
    <button id='btn_ft7_4' type="button"  class="btn btn-danger btn-xs collapsed" data-toggle="collapse" data-target='#div_ft7_4'>失败</button>
    <div id='div_ft7_4' class="collapse">  -->
    <!-- 默认展开错误信息 -Findyou -->
    <button id='btn_ft7_4' type="button"  class="btn btn-danger btn-xs" data-toggle="collapse" data-target='#div_ft7_4'>失败</button>
    <div id='div_ft7_4' class="collapse in" align="left">
    <pre>
    
ft7_4: 预期结果： {'name': ['该字段不能为空。']}
实际结果： {'name': ['该字段不能为空。'], 'interface': {'non_field_errors': ['项目和接口信息不对应!']}}
data的数据 {'name': '', 'interface': {'pid': '136', 'iid': '29'}, 'include': 'abc', 'author': 'Amy', 'request': 'XX请求'}
Traceback (most recent call last):
  File "D:\Python36\keyou_test_project\library\ddt.py", line 145, in wrapper
    return func(self, *args, **kwargs)
  File "D:\Python36\keyou_test_project\testcases\test_7testcases.py", line 68, in test_testcases
    raise e
  File "D:\Python36\keyou_test_project\testcases\test_7testcases.py", line 58, in test_testcases
    self.assertEqual(expected, res)  # 否则，比较预期结果和测试结果
AssertionError: {'name': ['该字段不能为空。']} != {'name': ['该字段不能为空。'], 'interface': {'non_field_errors': ['项目和接口信息不对应!']}}
- {'name': ['该字段不能为空。']}
+ {'interface': {'non_field_errors': ['项目和接口信息不对应!']}, 'name': ['该字段不能为空。']}


    </pre>
    </div>
    </td>
</tr>

<tr id='pt7_5' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_testcases_05: 创建用例不成功-interface不填</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='ft7_6' class='none'>
    <td class='failCase'><div class='testcase'>test_testcases_06: 创建用例不成功-author不填</div></td>
    <td colspan='5' align='center'>
    <!--默认收起错误信息 -Findyou
    <button id='btn_ft7_6' type="button"  class="btn btn-danger btn-xs collapsed" data-toggle="collapse" data-target='#div_ft7_6'>失败</button>
    <div id='div_ft7_6' class="collapse">  -->
    <!-- 默认展开错误信息 -Findyou -->
    <button id='btn_ft7_6' type="button"  class="btn btn-danger btn-xs" data-toggle="collapse" data-target='#div_ft7_6'>失败</button>
    <div id='div_ft7_6' class="collapse in" align="left">
    <pre>
    
ft7_6: 预期结果： {'author': ['该字段不能为空。']}
实际结果： {'interface': {'non_field_errors': ['项目和接口信息不对应!']}, 'author': ['该字段不能为空。']}
data的数据 {'name': 'case0312231551803403', 'interface': {'pid': '136', 'iid': '29'}, 'include': 'abc', 'author': '', 'request': 'XX请求'}
Traceback (most recent call last):
  File "D:\Python36\keyou_test_project\library\ddt.py", line 145, in wrapper
    return func(self, *args, **kwargs)
  File "D:\Python36\keyou_test_project\testcases\test_7testcases.py", line 68, in test_testcases
    raise e
  File "D:\Python36\keyou_test_project\testcases\test_7testcases.py", line 58, in test_testcases
    self.assertEqual(expected, res)  # 否则，比较预期结果和测试结果
AssertionError: {'author': ['该字段不能为空。']} != {'interface': {'non_field_errors': ['项目和接口信息不对应!']}, 'author': ['该字段不能为空。']}
- {'author': ['该字段不能为空。']}
+ {'author': ['该字段不能为空。'], 'interface': {'non_field_errors': ['项目和接口信息不对应!']}}


    </pre>
    </div>
    </td>
</tr>

<tr id='ft7_7' class='none'>
    <td class='failCase'><div class='testcase'>test_testcases_07: 创建用例不成功-request不填</div></td>
    <td colspan='5' align='center'>
    <!--默认收起错误信息 -Findyou
    <button id='btn_ft7_7' type="button"  class="btn btn-danger btn-xs collapsed" data-toggle="collapse" data-target='#div_ft7_7'>失败</button>
    <div id='div_ft7_7' class="collapse">  -->
    <!-- 默认展开错误信息 -Findyou -->
    <button id='btn_ft7_7' type="button"  class="btn btn-danger btn-xs" data-toggle="collapse" data-target='#div_ft7_7'>失败</button>
    <div id='div_ft7_7' class="collapse in" align="left">
    <pre>
    
ft7_7: 预期结果： {'request': ['该字段不能为空。']}
实际结果： {'interface': {'non_field_errors': ['项目和接口信息不对应!']}, 'request': ['该字段不能为空。']}
data的数据 {'name': 'case0312231551928203', 'interface': {'pid': '136', 'iid': '29'}, 'include': 'abc', 'author': 'Amy', 'request': ''}
Traceback (most recent call last):
  File "D:\Python36\keyou_test_project\library\ddt.py", line 145, in wrapper
    return func(self, *args, **kwargs)
  File "D:\Python36\keyou_test_project\testcases\test_7testcases.py", line 68, in test_testcases
    raise e
  File "D:\Python36\keyou_test_project\testcases\test_7testcases.py", line 58, in test_testcases
    self.assertEqual(expected, res)  # 否则，比较预期结果和测试结果
AssertionError: {'request': ['该字段不能为空。']} != {'interface': {'non_field_errors': ['项目和接口信息不对应!']}, 'request': ['该字段不能为空。']}
- {'request': ['该字段不能为空。']}
+ {'interface': {'non_field_errors': ['项目和接口信息不对应!']}, 'request': ['该字段不能为空。']}


    </pre>
    </div>
    </td>
</tr>

<tr id='ft7_8' class='none'>
    <td class='failCase'><div class='testcase'>test_testcases_08: 创建用例不成功-name已存在</div></td>
    <td colspan='5' align='center'>
    <!--默认收起错误信息 -Findyou
    <button id='btn_ft7_8' type="button"  class="btn btn-danger btn-xs collapsed" data-toggle="collapse" data-target='#div_ft7_8'>失败</button>
    <div id='div_ft7_8' class="collapse">  -->
    <!-- 默认展开错误信息 -Findyou -->
    <button id='btn_ft7_8' type="button"  class="btn btn-danger btn-xs" data-toggle="collapse" data-target='#div_ft7_8'>失败</button>
    <div id='div_ft7_8' class="collapse in" align="left">
    <pre>
    
ft7_8: 预期结果： {'name': ['具有 用例名称 的 用例信息 已存在。']}
实际结果： {'name': ['具有 用例名称 的 用例信息 已存在。'], 'interface': {'non_field_errors': ['项目和接口信息不对应!']}}
data的数据 {'name': 'case0312231551241803', 'interface': {'pid': '136', 'iid': '29'}, 'include': 'abc', 'author': 'Amy', 'request': 'XX请求'}
Traceback (most recent call last):
  File "D:\Python36\keyou_test_project\library\ddt.py", line 145, in wrapper
    return func(self, *args, **kwargs)
  File "D:\Python36\keyou_test_project\testcases\test_7testcases.py", line 68, in test_testcases
    raise e
  File "D:\Python36\keyou_test_project\testcases\test_7testcases.py", line 58, in test_testcases
    self.assertEqual(expected, res)  # 否则，比较预期结果和测试结果
AssertionError: {'nam[17 chars]例信息 已存在。']} != {'nam[17 chars]例信息 已存在。'], 'interface': {'non_field_errors': ['项目和接口信息不对应!']}}
+ {'interface': {'non_field_errors': ['项目和接口信息不对应!']},
- {'name': ['具有 用例名称 的 用例信息 已存在。']}
? ^

+  'name': ['具有 用例名称 的 用例信息 已存在。']}
? ^



    </pre>
    </div>
    </td>
</tr>

<tr id='pt7_9' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_testcases_09: 创建用例不成功-interface格式有误</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='ft7_10' class='none'>
    <td class='failCase'><div class='testcase'>test_testcases_10: 创建用例不成功-name字符超过50</div></td>
    <td colspan='5' align='center'>
    <!--默认收起错误信息 -Findyou
    <button id='btn_ft7_10' type="button"  class="btn btn-danger btn-xs collapsed" data-toggle="collapse" data-target='#div_ft7_10'>失败</button>
    <div id='div_ft7_10' class="collapse">  -->
    <!-- 默认展开错误信息 -Findyou -->
    <button id='btn_ft7_10' type="button"  class="btn btn-danger btn-xs" data-toggle="collapse" data-target='#div_ft7_10'>失败</button>
    <div id='div_ft7_10' class="collapse in" align="left">
    <pre>
    
ft7_10: 预期结果： {'name': ['请确保这个字段不能超过 50 个字符。']}
实际结果： {'name': ['请确保这个字段不能超过 50 个字符。'], 'interface': {'non_field_errors': ['项目和接口信息不对应!']}}
data的数据 {'name': 'gkLGY2O8t2fj3GSu8upNGh6ZwZbdBD1yAA0lQvGwX6RzdkEsODQ', 'interface': {'pid': '136', 'iid': '29'}, 'include': 'abc', 'author': 'Amy', 'request': 'XX请求'}
Traceback (most recent call last):
  File "D:\Python36\keyou_test_project\library\ddt.py", line 145, in wrapper
    return func(self, *args, **kwargs)
  File "D:\Python36\keyou_test_project\testcases\test_7testcases.py", line 68, in test_testcases
    raise e
  File "D:\Python36\keyou_test_project\testcases\test_7testcases.py", line 58, in test_testcases
    self.assertEqual(expected, res)  # 否则，比较预期结果和测试结果
AssertionError: {'nam[17 chars] 50 个字符。']} != {'nam[17 chars] 50 个字符。'], 'interface': {'non_field_errors': ['项目和接口信息不对应!']}}
+ {'interface': {'non_field_errors': ['项目和接口信息不对应!']},
- {'name': ['请确保这个字段不能超过 50 个字符。']}
? ^

+  'name': ['请确保这个字段不能超过 50 个字符。']}
? ^



    </pre>
    </div>
    </td>
</tr>

<tr id='ft7_11' class='none'>
    <td class='failCase'><div class='testcase'>test_testcases_11: 创建用例不成功-author字符超过50</div></td>
    <td colspan='5' align='center'>
    <!--默认收起错误信息 -Findyou
    <button id='btn_ft7_11' type="button"  class="btn btn-danger btn-xs collapsed" data-toggle="collapse" data-target='#div_ft7_11'>失败</button>
    <div id='div_ft7_11' class="collapse">  -->
    <!-- 默认展开错误信息 -Findyou -->
    <button id='btn_ft7_11' type="button"  class="btn btn-danger btn-xs" data-toggle="collapse" data-target='#div_ft7_11'>失败</button>
    <div id='div_ft7_11' class="collapse in" align="left">
    <pre>
    
ft7_11: 预期结果： {'author': ['请确保这个字段不能超过 50 个字符。']}
实际结果： {'interface': {'non_field_errors': ['项目和接口信息不对应!']}, 'author': ['请确保这个字段不能超过 50 个字符。']}
data的数据 {'name': 'case0312231552443003', 'interface': {'pid': '136', 'iid': '29'}, 'include': 'abc', 'author': 'gkLGY2O8t2fj3GSu8upNGh6ZwZbdBD1yAA0lQvGwX6RzdkEsODQ', 'request': 'XX请求'}
Traceback (most recent call last):
  File "D:\Python36\keyou_test_project\library\ddt.py", line 145, in wrapper
    return func(self, *args, **kwargs)
  File "D:\Python36\keyou_test_project\testcases\test_7testcases.py", line 68, in test_testcases
    raise e
  File "D:\Python36\keyou_test_project\testcases\test_7testcases.py", line 58, in test_testcases
    self.assertEqual(expected, res)  # 否则，比较预期结果和测试结果
AssertionError: {'author': ['请确保这个字段不能超过 50 个字符。']} != {'interface': {'non_field_errors': ['项目和接口信[39 chars]符。']}
- {'author': ['请确保这个字段不能超过 50 个字符。']}
?                                   ^

+ {'author': ['请确保这个字段不能超过 50 个字符。'],
?                                   ^

+  'interface': {'non_field_errors': ['项目和接口信息不对应!']}}


    </pre>
    </div>
    </td>
</tr>

<tr id='pt7_12' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_testcases_12: 创建用例不成功-pid和iid不填</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt7_13' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_testcases_13: 创建用例不成功-pid不填</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt7_14' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_testcases_14: 创建用例不成功-iid不填</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt7_15' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_testcases_15: 创建用例不成功-pid为非整数</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='pt7_16' class='hiddenRow'>
    <td class='passCase'><div class='testcase'>test_testcases_16: 创建用例不成功-iid为非整数</div></td>
    <td colspan='5' align='center'><span class="label label-success success">通过</span></td>
</tr>

<tr id='ft7_17' class='none'>
    <td class='failCase'><div class='testcase'>test_testcases_17: 创建用例不成功-pid和iid信息不匹配</div></td>
    <td colspan='5' align='center'>
    <!--默认收起错误信息 -Findyou
    <button id='btn_ft7_17' type="button"  class="btn btn-danger btn-xs collapsed" data-toggle="collapse" data-target='#div_ft7_17'>失败</button>
    <div id='div_ft7_17' class="collapse">  -->
    <!-- 默认展开错误信息 -Findyou -->
    <button id='btn_ft7_17' type="button"  class="btn btn-danger btn-xs" data-toggle="collapse" data-target='#div_ft7_17'>失败</button>
    <div id='div_ft7_17' class="collapse in" align="left">
    <pre>
    
ft7_17: 预期结果： {'interface': {'non_field_errors': ['项目和接口信息不对应!']}}
实际结果： {'interface': {'iid': ['所选接口不存在!']}}
data的数据 {'name': 'case0312231553129403', 'interface': {'pid': '1', 'iid': '245'}, 'include': 'abc', 'author': 'Amy', 'request': 'XX请求'}
Traceback (most recent call last):
  File "D:\Python36\keyou_test_project\library\ddt.py", line 145, in wrapper
    return func(self, *args, **kwargs)
  File "D:\Python36\keyou_test_project\testcases\test_7testcases.py", line 68, in test_testcases
    raise e
  File "D:\Python36\keyou_test_project\testcases\test_7testcases.py", line 58, in test_testcases
    self.assertEqual(expected, res)  # 否则，比较预期结果和测试结果
AssertionError: {'interface': {'non_field_errors': ['项目和接口信息不对应!']}} != {'interface': {'iid': ['所选接口不存在!']}}
- {'interface': {'non_field_errors': ['项目和接口信息不对应!']}}
+ {'interface': {'iid': ['所选接口不存在!']}}


    </pre>
    </div>
    </td>
</tr>

<tr id='total_row' class="text-center active">
    <td>总计</td>
    <td>63</td>
    <td>54</td>
    <td>8</td>
    <td>1</td>
    <td>通过率：85.71%</td>
</tr>
</table>

<div id='ending'>&nbsp;</div>
    <div style=" position:fixed;right:50px; bottom:30px; width:20px; height:20px;cursor:pointer">
    <a href="#"><span class="glyphicon glyphicon-eject" style = "font-size:30px;" aria-hidden="true">
    </span></a></div>
    
</body>
</html>
